﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using SouthApps.MobileHealth.SDK.DAL.Model;

namespace SouthApps.MobileHealth.SDK.DAL.DataAccess
{
    public class GuardiaSucursalPrestadorDao : DataAccessObject
    {
        #region Get

        public List<GuardiaSucursalPrestador> GetGuardiasSucursalPrestador(int sucursalPrestadorId)
        {
            return this.GetGuardiasSucursalPrestador(sucursalPrestadorId, true);
        }

        public List<GuardiaSucursalPrestador> GetGuardiasSucursalPrestador(int sucursalPrestadorId, bool activo)
        {
            try
            {
                using (var entities = this.EntityContext)
                {
                    var query = from e in entities.guardiasucursalprestador.Include("SucursalPrestador")
                                where (e.sucursalPrestadorId == sucursalPrestadorId && e.activo == activo)
                                select e;

                    return query.ToList();
                }
            }
            catch (Exception ex)
            {
                throw this.HandleException(ex);
            }
        }

        public GuardiaSucursalPrestador GetGuardiaSucursalPrestador(int guardiaSucursalPrestadorId)
        {
            try
            {
                using (var entities = this.EntityContext)
                {
                    return entities.guardiasucursalprestador.Include("SucursalPrestador").FirstOrDefault(e =>
                        e.guardiaSucursalPrestadorId == guardiaSucursalPrestadorId);
                }
            }
            catch (Exception ex)
            {
                throw this.HandleException(ex);
            }
        }

        public List<GuardiaSucursalPrestador> GetGuardiasSucursalesPrestador(int financiadorId)
        {
            return this.GetGuardiasSucursalesPrestador(financiadorId, true);
        }

        public List<GuardiaSucursalPrestador> GetGuardiasSucursalesPrestador(int financiadorId, bool activo)
        {
            try
            {
                using (var entities = this.EntityContext)
                {
                    var query = from e in entities.guardiasucursalprestador.Include("SucursalPrestador.Departamento").Include("SucursalPrestador.Departamento.Provincia").Include("SucursalPrestador.Prestador")
                                where (e.financiadorId == financiadorId)
                                select e;

                    return query.ToList();
                }
            }
            catch (Exception ex)
            {
                throw this.HandleException(ex);
            }
        }

        #endregion

        #region Add

        public void AddGuardiaSucursalPrestador(GuardiaSucursalPrestador guardiaSucursalPrestador)
        {
            try
            {
                using (var entities = this.EntityContext)
                {
                    entities.AddToguardiasucursalprestador(guardiaSucursalPrestador);
                    this.SaveChanges(entities);
                }
            }
            catch (Exception ex)
            {
                throw this.HandleException(ex);
            }
        }

        #endregion

        #region Modify

        public void ModifyGuardiaSucursalPrestador(GuardiaSucursalPrestador guardiaSucursalPrestador)
        {
            try
            {
                using (var entities = this.EntityContext)
                {
                    GuardiaSucursalPrestador oldGuardiaSucursalPrestador = entities.guardiasucursalprestador.FirstOrDefault(e => e.guardiaSucursalPrestadorId == guardiaSucursalPrestador.guardiaSucursalPrestadorId);
                    oldGuardiaSucursalPrestador = guardiaSucursalPrestador;

                    this.SaveChanges(entities);
                }
            }
            catch (Exception ex)
            {
                throw this.HandleException(ex);
            }
        }

        #endregion
    }
}
